// 封装公共导出方法
/* eslint-disable */
import FileSaver from 'file-saver'
import XLSX from 'xlsx'

/**
 * 通过json进行excel导出
 * @param data json数据
 * @param fileName 文件名称
 * @param sheetName 数据表名称(非必填)
 */
export function exportJson2Excel (data, fileName, sheetName) {
  const sheet = XLSX.utils.json_to_sheet(data)
  sheetName = sheetName || 'sheet1'
  const workbook = {
    SheetNames: [sheetName],
    Sheets: {}
  }
  workbook.Sheets[sheetName] = sheet
  // 生成excel的配置项
  const wopts = {
    bookType: 'xlsx', // 要生成的文件类型
    bookSST: false, // 是否生成Shared String Table，官方解释是，如果开启生成速度会下降，但在低版本IOS设备上有更好的兼容性
    type: 'binary'
  }
  const out = XLSX.write(workbook, wopts)
  FileSaver.saveAs(new Blob([string2ArrayBuffer(out)], { type: 'application/octet-stream;charset=utf-8' }), fileName + '.xlsx')
}

// 字符串转ArrayBuffer
export function string2ArrayBuffer (s) {
  const buf = new ArrayBuffer(s.length)
  const view = new Uint8Array(buf)
  for (let i = 0; i < s.length; ++i) {
    view[i] = s.charCodeAt(i) & 0xFF
  }
  return buf
}
